package com.guaoran.interview.in2018.collection.list;

import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @Author gucheng
 * @Description
 *  ArrayList
 * 2019-03-19 9:36
 */
public class ArrayListDemo {
    public static void main(String[] args) {
        //可变长度的动态数组，默认初始化的时候，长度是0 ,当进行add操作时，会默认为10，底层是数组，扩容原来的1.5倍，右移1位，可变大小的 Object数组
        List list = new ArrayList();
        //删除一个元素的时候，会让元素右面的元素左移一位
        for (int i = 0; i < 3; i++) {
            list.add(i);
        }
        // list 是当长度不够的时候，进行add的时候在进行扩容，扩容规则是
        // new = oldCapacity + (oldCapacity >> 1
        list.add(0);


        // 为什么是数组却可以扩容
        // 因为底层是进行了copyof:
        // elementData = Arrays.copyOf(elementData, newCapacity);





//====================================//
//        list.removeAll();
//        list.removeAll()
//
//        System.out.println(list.lastIndexOf(9));
//        System.out.println(list.get(9));
//        System.out.println(list);
//        list.get()



//        System.out.println(list);
//        ((ArrayList) list).trimToSize();
//        System.out.println(list);
//
//        Iterator iterator = list.iterator();
//        while (iterator.hasNext()){
//            Object next = iterator.next();
//            System.out.println(next);
//        }
//        System.out.println(1.0/0.0);
//
//
//
//        System.out.println(Integer.toBinaryString(15));


        String str = new String("123");
        for (int i = 0; i < str.length(); i++) {
            System.out.println(str.charAt(i));
        }
        System.out.println("====================");
        for (char c :str.toCharArray()) {
            System.out.println(c);
        }
    }
}
